class FieldValidator{
    /**
     * 构造器
     * @params {String} txtId 文本框的id
     * @params {Function} ValidatorFunc 验证规则函数，当需要对文本进行验证时，回调用该函数，函数的参数为文本框的值，函数的返回值为验证的错误消息，罗没有返回，表示无错误
     */
    constructor(txtId,ValidatorFunc){
        this.ValidatorFunc = ValidatorFunc
        this.input = document.querySelector("#"+txtId)
        this.p = this.input.nextElementSibling
        this.input.onblur = ()=>{
            this.validate()
        }
    }
    /**
     * 验证，成功返回true,失败返回false
     */
    async validate(){
        const err = await this.ValidatorFunc(this.input.value)||''
        this.p.innerHTML = err
        if(err){
            return false
        }
        return true
    }
    /**
     * 对传入的所有验证器进行统一的验证，如果所有的验证均通过，则返回true，否则返回false
     * @param  {...any}
     * @returns 
     */
    static async validate(...validates){
        const proms = validates.map(item => item.validate())
        const results = await Promise.all(proms)
        return results.every(item => item)
    }
}
